package zlx.pojo;

import java.io.Serializable;
import java.util.List;

public class Page<T> implements Serializable {

//    public static final long PAGE_SIZE = 4;

    // 总共的记录数 select count(*)
    private Integer totalCount;
    // 每页显示的记录数 可以设定
//    private long pageSize = PAGE_SIZE;
    private Integer pageSize ;
    // 总的页数 公式：总记录数 / 每页显示记录数
    private Integer pageTotal;
    // 当前页码 参数获取
    private Integer pageNo;
    // 当前页显示的数据集合 select * from t_book limit begin , size;
    private List<T> items;

    // 不是模块分页的不同连接地址
    private String url;

    public Page(Integer totalCount, Integer pageSize, Integer pageTotal, Integer pageNo) {
        this.totalCount = totalCount;

        this.pageSize =  pageSize;

        this.pageNo = pageNo;

        if(this.pageNo == null){
            //如页面没有指定显示那一页.显示第一页.
            this.pageNo = 1;
        }

        if(this.pageSize == null){
            //如果每页显示条数没有指定,默认每页显示3条
            this.pageSize = 4;
        }

        //计算总页数
        this.pageTotal = (this.totalCount+this.pageSize-1)/this.pageSize;

        //判断当前页数是否超出范围
        //不能小于1
        if(this.pageNo < 1){
            this.pageNo = 1;
        }
        //不能大于总页数
        if(this.pageNo > this.pageTotal){
            this.pageNo = this.pageTotal;
        }

    }
    //计算起始索引
    public Integer getStart(){
        return (this.pageNo-1)*this.pageSize;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getPageTotal() {
        return pageTotal;
    }

    public void setPageTotal(Integer pageTotal) {
        this.pageTotal = pageTotal;
    }

    public List<T> getItems() {
        return items;
    }

    public void setItems(List<T> items) {
        this.items = items;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Integer getPageNo() {
        return pageNo;
    }

    public void setPageNo(Integer pageNo) {
        // 检查数据的有效边界
        if (pageNo < 1) {
            pageNo = 1;
        }
        if (pageNo > pageTotal) {
            pageNo = pageTotal;
        }

        this.pageNo = pageNo;
    }


    @Override
    public String toString() {
        return "Page [totalCount=" + totalCount + ", pageSize=" + pageSize + ", pageTotal="
                + pageTotal + ", pageNo=" + pageNo + ", items=" + items + "]";
    }

}
